package com.example.satestdemo.service;

import com.example.satestdemo.repo.UserRepo;
import com.example.satestdemo.util.SaWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserService {

    private final SaWrapper saWrapper;
    private final UserRepo repo;

    public UserService(@Autowired UserRepo userRepo, @Autowired SaWrapper saWrapper) {
        this.repo = userRepo;
        this.saWrapper = saWrapper;
    }

    public long register(String userName, String password) {
        return repo.register(userName, password);
    }

    /**
     * 登录。
     *
     * @return 是否登录成功。
     */
    public boolean login(String userName, String password) {
        if (repo.login(userName, password)) {
            // 调用 SA
            // 直接这么写 `UserServiceTest` 会出错。因为单元测试的时候 Spring 未启动，SA 也就没有进行初始化。
            // 最终导致异常：cn.dev33.satoken.exception.SaTokenException: 未初始化任何有效上下文处理器
//            StpUtil.login(userName);

            // 使用包装类
            saWrapper.login(userName);
            return true;
        }
        return false;
    }
}
